JUnit5 is more tolerant regarding the visibility of test classes and methods than JUnit4, which required everything to be public
. Test
classes and methods can have any visibility except private
. It is however recommended to use the default package visibility to improve
readability.
Test classes, test methods, and lifecycle methods are not required to be public
, but they must not be private
.
It is generally recommended to omit the public modifier for test classes, test methods, and lifecycle methods unless there is a technical reason
for doing so – for example, when a test class is extended by a test class in another package. Another technical reason for making classes and
methods public is to simplify testing on the module path when using the Java Module System.
— JUnit5 User Guide
What is the potential impact?
The code will be non-conventional and readability can be slightly affected.
Exceptions
This rule does not raise an issue when the visibility is set to private
, because private
test methods and classes are
systematically ignored by JUnit5, without a proper warning. In this case, there is also an impact on reliability and so it is handled by the rule
S5810.